home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VSERLOW.DOC < prev    next >
Text File  |  1993-04-14  |  11KB  |  285 lines

  1.  
  2. {
  3.  ════════════════════════════════════════════════════════════════════════════
  4.  
  5.  Visionix Serial Communictions LOW Unit (VSER)
  6.  Copyright 1991,92,93 Visionix
  7.  ALL RIGHTS RESERVED
  8.  
  9.  ────────────────────────────────────────────────────────────────────────────
  10.  
  11.  revision history in reverse chronological order:
  12.  
  13.  Initials  Date      Comment
  14.  
  15.  ────────  ────────  ────────────────────────────────────────────────────────
  16.  
  17.  lpg       03/16/93  Added Source Documentation
  18.  
  19.  mep       02/11/93  Cleaned up code for beta release
  20.  
  21.  jrt       02/08/93  Sync with beta 0.12 release
  22.  
  23.  jrt       11/21/92  Sync with beta 0.08
  24.  
  25.  jrt       09/01/92  First logged revision.
  26.  
  27.  ────────────────────────────────────────────────────────────────────────────
  28. }
  29.  
  30.  
  31.  
  32. Unit VSerLow;
  33.  
  34.  
  35. CONST
  36.  
  37.   {-------------------------}
  38.   { Serial Driver Functions }
  39.   {-------------------------}
  40.  
  41.   sdfDriverNew        = 1;
  42.   sdfDriverOff        = 2;
  43.   sdfDriverOn         = 3;
  44.   sdfDriverDispose    = 4;
  45.   sdfActivatePort     = 5;
  46.   sdfDeActivatePort   = 6;
  47.   sdfSetCommParam     = 7;
  48.   sdfGetCommParam     = 8;
  49.   sdfGetFlowConType   = 9;
  50.   sdfSetFlowConType   = 10;
  51.   sdfTurnSendOnOff    = 11;
  52.   sdfTurnReceiveOnOff = 12;
  53.   sdfBreakOnOff       = 13;
  54.   sdfDTROnOff         = 14;
  55.   sdfGetStatus        = 15;
  56.   sdfFlushOutBuff     = 16;
  57.   sdfPurgeOutBuff     = 17;
  58.   sdfPurgeInBuff      = 18;
  59.   sdfEventProcNew     = 19;
  60.   sdfEventProcOff     = 20;
  61.   sdfEventProcOn      = 21;
  62.   sdfEventProcDispose = 22;
  63.   sdfWriteCh          = 23;
  64.   sdfWriteBlock       = 24;
  65.   sdfReadCh           = 25;
  66.   sdfReadBlock        = 26;
  67.  
  68.   {-------------------------}
  69.  
  70.   {----------------------------------------}
  71.   { Modem Status Register status bits (AL) }
  72.   {----------------------------------------}
  73.  
  74.   MSRctsDelta = $01; { Clear To Send changed                                 }
  75.                      { Delta CTS - not reliable                              }
  76.   MSRdsrDelta = $02; { Data Set Ready changed                                }
  77.                      { Delta DSR - not reliable                              }
  78.   MSRriDelta  = $04; { Ring Indicate changed                                 }
  79.                      { Delta DCD - not reliable                              }
  80.   MSRcdDelta  = $08; { Carrier Detect changed                                }
  81.                      { always set to 1 upon return (DUMMY DCD)               }
  82.   MSRcts      = $10; { Clear To Send                                         }
  83.                      { CTS - DCE sets - do not xmit until true               }
  84.   MSRdsr      = $20; { Data Set Ready                                        }
  85.                      { DSR - modem is ready to be used                       }
  86.   MSRri       = $40; { Ring Indicate                                         }
  87.                      { RI - only on during active voltage signal             }
  88.   MSRcd       = $80; { Carrier Detect                                        }
  89.                      { DCD - data carrier detect                             }
  90.  
  91.   {---------------------------------------}
  92.   { Line Status Register status bits (AH) }
  93.   {---------------------------------------}
  94.  
  95.   LSRRcvReady = $01; { Received data ready                                   }
  96.                      { RDA  - input data is available in buffer              }
  97.   LSROverrun  = $02; { OverRun error                                         }
  98.                      { OVRN - the input buffer has been overrun              }
  99.   LSRParity   = $04; { Parity error                                          }
  100.                      { Reserved (Parity error in BIOS INT 14h)               }
  101.   LSRFrame    = $08; { Framing error                                         }
  102.                      { Reserved (Framing error in BIOS INT 14h)              }
  103.   LSRBreak    = $10; { Break detected                                        }
  104.                      { Reserved (Break detect in BIOS INT 14h)               }
  105.   LSRXhReady  = $20; { Transmit hold register empty                          }
  106.                      { THRE - room is available in output buffer             }
  107.   LSRXsReady  = $40; { Transmit shift register empty                         }
  108.                      { TSRE - output buffer is empty                         }
  109.   LSRTimeout  = $80; { Timeout (software implemented).  If true,             }
  110.                      { then none of the above 15 bits are valid.             }
  111.  
  112.   {-----------------------------}
  113.   { Modem Control Register bits }
  114.   {-----------------------------}
  115.  
  116.   MCRDtr      = $1; { Data terminal ready                                    }
  117.   MCRRts      = $2; { Request to send                                        }
  118.   MCROut1     = $4; { Out1: software implemented output                      }
  119.   MCROut2     = $8; { Out2: as Out1 with interrupts to system-bus            }
  120.   MCRLoop     = $10;{ Loopback test mode                                     }
  121.  
  122.   {----------------------------}
  123.   { Line Control Register bits }
  124.   {----------------------------}
  125.  
  126.   LCRdatabits = $1; { Bits/character (databits) - bits 1-0                   }
  127.   LCRstopbits = $4; { Stop bits of character                                 }
  128.   LCRparity   = $8; { Parity - bits 5-3                                      }
  129.   LCRbreak    = $20;{ Enable break status                                    }
  130.   LCRdivisor  = $40;{ Enable addressing of baudrate divisor registers        }
  131.  
  132.   {----------------------------------------}
  133.   { Interrupt Identification Register bits }
  134.   {----------------------------------------}
  135.  
  136.   IIRReady    = $1; { Interrupt waiting status                               }
  137.  
  138.   {---------------------------}
  139.   { Interrupt Enable Register }
  140.   {---------------------------}
  141.  
  142.   IEREnabRE   = $1; { Enable read (receive data) interrupt status            }
  143.   IEREnabWI   = $2; { Enable write (transmit empty) register interrupt       }
  144.   IEREnabLSR  = $4; { Enable line status interrupt                           }
  145.   IEREnabMSR  = $8; { Enable delta modem status interrupt                    }
  146.  
  147.   {------------------------------------------------------}
  148.   { Serial Registers - These are the offsets from IOPort }
  149.   {------------------------------------------------------}
  150.  
  151.   DLL = 0;  { Divisor Latch Least-significant-byte (LCR bit $80 on)          }
  152.   DLM = 1;  { Divisor Latch Most-significant-byte (LCR bit $80 on)           }
  153.   RBR = 0;  { Receiver Buffer Register (read)                                }
  154.   THR = 0;  { Transmitter Holding Register (write)                           }
  155.   IER = 1;  { Interrupt Enable Register                                      }
  156.   IIR = 2;  { Interrupt Identification Register (read only)                  }
  157.   LCR = 3;  { Line Control Register                                          }
  158.   MCR = 4;  { Modem Control Register  (see above)                            }
  159.   LSR = 5;  { Line Status Register  (see above)                              }
  160.   MSR = 6;  { Modem Status Register  (see above)                             }
  161.   SPR = 7;  { 8250 Scratch Pad Register                                      }
  162.  
  163.   {------------------------}
  164.   { MISCELLANOUS CONSTANTS }
  165.   {------------------------}
  166.  
  167.   IMR      = $21; { Port address of the Interrupt Mask Register              }
  168.  
  169.   NUL   = #0;  {^@}     SOH   = #1;  {^A}     STX   = #2;  {^B}
  170.   ETX   = #3;  {^C}     EOT   = #4;  {^D}     ENQ   = #5;  {^E}
  171.   ACK   = #6;  {^F}     BEL   = #7;  {^G}     BS    = #8;  {^H}
  172.   HT    = #9;  {^I}     LF    = #10; {^J}     VT    = #11; {^K}
  173.   FF    = #12; {^L}     CR    = #13; {^M}     SO    = #14; {^N}
  174.   SI    = #15; {^O}     DLE   = #16; {^P}     DC1   = #17; {^Q}
  175.   DC2   = #18; {^R}     DC3   = #19; {^S}     DC4   = #20; {^T}
  176.   NAK   = #21; {^U}     SYN   = #22; {^V}     ETB   = #23; {^W}
  177.   CAN   = #24; {^X}     EM    = #25; {^Y}     SUB   = #26; {^Z}
  178.   ESC   = #27;          FS    = #28; {^\}     GS    = #29; {^`}
  179.   RS    = #30; {^=}     US    = #31; {^-}     SP    = #32;
  180.   DEL   = #127;         BLANK = #255;       
  181.  
  182.  
  183. Type
  184.  
  185.   PCommParam = ^TCommParam;
  186.   TCommParam = RECORD
  187.  
  188.     ComPort   : BYTE;
  189.     BaudRate  : LONGINT;
  190.     Parity    : CHAR;
  191.     DataBits  : BYTE;
  192.     StopBits  : BYTE;
  193.  
  194.     Break     : BOOLEAN;
  195.  
  196.   END;
  197.  
  198.   PSerDriverPacket = ^TSerDriverPacket;
  199.   TSerDriverProc   = Procedure( SDPacket : PSerDriverPacket );
  200.   PSerDriverProc   = ^TSerDriverProc;
  201.   TSerDriverPacket = RECORD
  202.  
  203.     Func            : WORD;
  204.     IData           : POINTER;
  205.     SerDriverProc   : TSerDriverProc;
  206.     DriverInfo      : POINTER;
  207.  
  208.     CommParam       : PCommParam;
  209.     FlowConType     : INTEGER;
  210.     OnOff           : BOOLEAN;
  211.     Status          : LONGINT;
  212.     Error           : LONGINT;
  213.   { EventProc       : TSerEventProc;
  214.     EventMask       : WORD;
  215.     EventProcInfo   : POINTER;
  216.     EventProcHandle : TSerEventProcHandle; }
  217.     Ch              : CHAR;
  218.     Buf             : POINTER;
  219.     Count           : LONGINT;
  220.     Result          : LONGINT;
  221.  
  222.   END;
  223.  
  224.   PSerChan = ^TSerChan;
  225.  
  226.   TSerChan = RECORD
  227.  
  228.     Sig              : WORD;
  229.     SerDriverProc    : TSerDriverProc;
  230.     SerDriverID      : POINTER;
  231.   { EventProcList    : ... }
  232.     SDP              : TSerDriverPacket;
  233.  
  234.   END;
  235.  
  236.  
  237.  
  238.   PSerCaps = ^TSerCaps;
  239.   TSerCaps = RECORD
  240.  
  241.     A : WORD;
  242.  
  243.   END;
  244.  
  245.  
  246. {────────────────────────────────────────────────────────────────────────────}
  247.  
  248. Procedure VSerLowBIOSInfo(             ComPort       : BYTE;
  249.                                    Var IOPort        : WORD;
  250.                                    Var IRQ           : BYTE;
  251.                                    Var IntNo         : BYTE    );
  252.  
  253.  
  254.  
  255. ──────────────────────────────────────────────────────────────────────────────
  256.  
  257.  
  258. [FUNCTION]
  259.  
  260. Procedure VSerLowBIOSInfo(             ComPort       : BYTE;
  261.                                    Var IOPort        : WORD;
  262.                                    Var IRQ           : BYTE;
  263.                                    Var IntNo         : BYTE    );
  264.  
  265. [PARAMETERS]
  266.  
  267. ComPort     Communications Port Number
  268. IOPort      VAR Returned IO Port Number
  269. IRQ         VAR Returned IRQ Number
  270. IntNo       VAR Returned Interrupt Number
  271.  
  272. [RETURNS]
  273.  
  274. Function : None
  275. (VAR     : [IOPort] IO Port Number)
  276. (VAR     : [IRQ] Returned IRQ Number)
  277. (VAR     : [IntNo] Returned Interrupt Number)
  278.  
  279. [DESCRIPTION]
  280.  
  281. [SEE-ALSO]
  282.  
  283. [EXAMPLE]
  284.  
  285.